Sincronizarea
In cazul excluderii mutuale procesele concureaza pentru utilizarea unei anumite resurse (regiunea critica), iar natura interactiunii permite rularea unui proces fara necesitatea de cunostinte despre celelalte procese, cu care ruleaza in paralel. Acest lucru este posibil deoarece procesul incearca sa obtina resursa, indiferent de starea concurentilor sai. 
O alta clasa de intercatiune este cea a cooperarii proceselor, ceruta pentru implementarea unui task complet. In acest caz procesele care sint folosite pentru executarea taskului trebuie sa cunoasca starea celorlalte procese cu care interactioneaza. Fiecare proces este proiectat si realizat prin  considerarea numarului si tipului de interactiuni posibile cu alte procese, intrucit procesele nu mai concureaza intre ele, ci coopereaza. 
Semafoare
Cel mai simplu tip de informatii vehiculate intre  doua procese este un semnal de sincronizare. Semnalele de sincronizare sint cerute de faptul ca vitezele relative ale celor doua procese sint, in general, necunoscute. Intr un sistem cu procese concurente durata de executie a unei secvente de instructiuni depinde de numarul si caracteristicile celorlalte procese concurente, precum si de evenimente externe, al caror numar si moment al aparitiei sint necunoscute. 
Solutia clasica a problemei sincronizarii intre doua sau mai multe procese, fara schimb de date, se bazeaza pe utilizarea semafoarelor. Ele au fost introduse de catre Dijkstra [12],  o serie de alti cercetatori continuindu i lucrarile [13],[14],[15].
In principiu, semaforul este o variabila x, careia i se asociaza doua proceduri: P(x) si V(x) (unii autori le denumesc "signal" si, respectiv, "wait"). O alta caracteristica a semaforului este numarul c(x) maxim de semnale trimise semaforului, dar nerealizate. 
Functionarea corecta a semaforului este dictata de regulile numite invariantii comunicatiei (communication invariants). Fie s(x) si r(x) numarul de semnale trimise, respectiv primite de catre semaforul x. O comportare corecta presupune respectarea relatiei
0 <= r(x) <= s(x) <= r(x) + c(x).
Uneori este utila asigurarea unei valori initiale i(x) unui semafor inaintea declansarii operatiilor de sincronizare intre procese. In acest caz invariantul de comunicatie se rescrie astfel: 
0 =< r(x) <= s(x) + i(x) =< r(x) + c(x).
Operarea celor doua proceduri asociate P si V trebuie sa satisfaca urmatoarele reguli, care definesc modul in care semaforul sincronizeaza executia procesului:
operatia V efectuata asupra semaforului pentru care 
r(x) < s(x) + i(x) 
are ca rezultat incrementarea lui r(x). Suplimentar, daca  
s(x) + i(x) = r(x) + c(x) 
si exista procese asteptind la semafor, unuia dintre acestea i se permite continuarea si are loc incrementarea lui s(x). Daca procedura se executa cind r(x) = s(x) + i(x), procesul este suspendat si inserat in sirul de asteptare asociat semaforului.
operatia P efectuata asupra semaforului cind s(x) + i(x) = r(x) + c(x) produce suspendarea procesului si inserarea lui in sirul de asteptare asociat semaforului. Daca s(x) + i(x) < r(x) + c(x), se incrementeaza s(x). Suplimentar, daca exista procese asteptind la semafor, unuia dintre ele i se permite continuarea si are loc incrementarea lui r(x).

Operatii cu semafoare
Pentru implementarea regulilor de sincronizare este necesara o unica valoare intreaga 
n(x) = s(x) + i(x) - r(x)
Din invariantii de comunicatie se deduce ca:
0 < n(x) < c(x)
In plus, valoarea initiala a lui n(x) este i(x) pentru a asigura corectitudinea operatiilor. Aceasta regula rezulta din definirea lui n(x) si imprimind s(x) = r(x) = 0. Intrucit sirurile de asteptare sint incluse in regulile de sincronizare, structurile de date utilizind procedurile P si V trebuie sa posede anumite caracteristici necesare implementarii acestor siruri.
Sint necesare doua tipuri de siruri: unul pentru procesele intirziate in timpul executarii operatiei P, iar celalalt pentru procese intirziate in timpul executiei operatiei V. Desi distincte din punctul de vedere logic, cele doua siruri pot fi implementate utilizind o singura structura; este usor de demonstrat ca, daca c(x) = 0, este imposibil a avea doua procese asteptind simultan in ambele siruri. Deci, o singura structura de date poate pastra fie toate procesele intirziate la executarea operatiei P, fie toate acelea intirziate pe durata operatiei V, tipul procesului ce asteapta fiind determinat de starea variabilei n(x). Demonstratia se bazeaza pe analiza conditiilor care determina inserarea proceselor si extragerea lor din sirul de asteptare. Initial cele doua siruri sint vide si ele ramin asa pina cind n(x) devine egal fie cu 0 (adica r(x) = s(x) + i(x)), fie cu c(x) (adica s(x) + i(x) = r(x) + c(x));in primul caz toate operatiile V efectuate vor intirzia procesul corespunzator, in timp ce operatiile P nu o vor face. Daca procesele asteapta pentru ca ele au efectuat o operatie V, atunci valoarea lui n(x) trebuie sa fie 0, deoarece fiecare operatie P va incrementa atit r(x) cit si s(x); deci, doar cind toate procesele care asteapta au fost activate si pot continua, valoarea lui n(x) poate fi incrementata.
Cu motive similare se poate demonstra ca procesele intirziate prin operatiile P pot exista doar cind n(x) = c(x). Situatia in care procesele asteptind la semafor sint intirziate fie de operatii P, fie de operatii V este imposibila, deoarece valoarea contorului n(x) ar trebui sa aiba simultan doua valori distincte, 0 si c(x). Intrucit numai o singura clasa de procese poate astepta la semafor la un anumit moment de timp, nu este necesar a aloca doua sectiuni distincte ale structurii de date in implementarea semaforului.
Cele doua operatii P si V, folosite pentru a defini un semafor, trebuie inserate intr o regiune critica, deoarece manipularea necontrolata a cimpului n(x) conduce la o situatie de concurenta in sisteme pseudoparalele. Intrucit astfel de operatii nu sint atit de simple pe cit este simpla inscriere a unei variabile, este intelept a controla accesul la regiunea critica a semaforului prin intermediul operatiilor test and set, efectuate asupra variabilelei v, si a implementa un sir de procese asteptind accesul la operatia cu semaforul.
Un proces care incearca efectuarea unei operatii cu semaforul este intirziat de doua ori: prima data   deoarece regiunea critica a semaforului este ocupata, iar a doua oara   intrucit testarea semaforului produce o intirziere a procesului. Totusi, a doua din aceste intirzieri este scurta, ca urmare a simplitatii operatiilor P si V.
Cind un proces este extras dintr un sir de asteptare drept consecinta a unei operatii P sau V, se executa algoritmul de planificare privind alocarea CPU, pentru a decide daca procesul extras are o prioritate superioara celui ce l a extras. In acest caz, procesul care efectueaza operatia P sau V este suspendat si se executa cel extras. Deci, chiar cind semnaleaza corect la semafor si primeste accesul, un proces poate fi suspendat, intrucit el activeaza unul de prioritate superioara. Totusi, aceasta intirziere este diferita de cea cauzata de receptia la un semafor vid sau semnalizarea la unul plin. Diferenta consta in faptul ca proces blocat de o anumita stare a semaforului nu se va putea executa pina cind semaforul isi schimba starea; un proces intirziat pentru ca a deblocat un altul va fi reluat imediat ce unitatea centrala de prelucrare devine disponibila.